home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Inside Mac Games Volume 6 #5
/
IMG 56 Vol 6-5.iso
/
Shareware
/
MacMAME
/
Documentation
/
cheat.doc
next >
Wrap
Text File
|
1997-08-14
|
24KB
|
621 lines
Cheats In MAME
==============
What Is This?
=============
I know that using cheats will probably spoil a game, but I did
this because there are many games that I want to see the endings
of, but never will if I have to play several weeks to finish them.
It is also very useful for driver writers, like me, because it
allows me to see all the levels of a game without having to play
them. It is very frustrating to play a game you do not really like,
all night, just to pass the first level because someone tells you
that there is a bug in your driver that appears on the second level.
The cheat system in MAME operates much like the Pro Action Replay.
You can use cheats found by others, or you can try to find new
cheats yourself.
The file CHEAT.DAT contains cheats that I, and others, have found.
This file is in standard text format, so you can see or edit it with
a standard text editor like Notepad.
You might want to read the file just to have an idea of what cheats
are available. That is a lot faster than trying all the games one
after another.
Operation
=========
- Start a game in MAME, passing the "-cheat" parameter on the
command line.
- After the game's self test has completed (and you have started
playing), press <TAB> to go to the menu.
Note: it is important that you do not enable any cheats before the
self tests have completed, otherwise the tests will probably
fail and the game will not start. (The tests are the garbage
you see when most games start up.)
- Select "CHEAT" on the menu.
- You should see:
Load And/Or Enable A Cheat
Start A New Cheat Search
Continue Search
Memory Watch
Return To Main Menu
Active Cheats:
--- None ---
- The first line allows you to select and enable a cheat. The other
three lines are used when searching for new cheats. The "Return To Main
Menu" is obvious.
Below that, you have a list of the currently active cheats. The first
time you bring up this menu there will be no cheats active and it will
show "--- None ---" to indicate that.
- Select "Load And/Or Enable A Cheat".
- The upper part of the screen lists the cheats that are currently
available. This is where you can select the cheat you want to enable.
- The lower part is a list of the currently enabled cheats.
- If nothing appears between the lines "Select a Cheat" and "Active
Cheats", then no cheats are available for the current game.
- To enable a cheat, select it using the arrow keys, and use <ENTER> to
enable it. The name of the cheat should now appear in the "Active
Cheats" list.
- Pressing <ENTER> on a cheat that is already in the "Active Cheats"
list will remove it from the "Active Cheats" list (disables the cheat).
- <DELETE>, <F1>, <F3> and <INS> are used when you are searching for your
own cheats, or editing a cheat.
Note: pressing <DELETE> does not delete that cheat from the CHEAT.DAT
file, it just deletes it from the list in memory.
Pressing <F1> on a cheat will save it to the CHEAT.DAT file.
Pressing <F1> on a cheat that is already in the file will save it
again (it will be duplicated in the file).
Pressing <INS> will insert an new "empty" Cheat into the Cheat List.
To remove a cheat from the file, you will have to edit the
CHEAT.DAT file and remove it.
- Press <F10> to see a view the Help.
- Press <ESC> or <TAB> three times to return to the game.
- Start a game, you should see the cheat's effects.
- During the game, if you have to temporarilly disable all cheats,
press <F7>. (See the MAME docs, as this key might have been changed.)
*NOTE*: Enabling a cheat, *even for a short time*, will disable the
hi-score saving for that MAME session. If you want to reenable
hi-score saving, you will have to restart MAME.
The "Memory Watch" option is described below.
How To Search For New Cheats
============================
What can you search for? You can search for anything that happens
during a game. The idea of a cheat is to replace a value, at a specific
location in memory, with a different value.
(Using cheat function #0, explained later) the game will not be able to
change that value while the cheat is active. So, if you know the
memory location where the "lives remaining" are kept, placing a value of
"3" at that location will make the game think that you always have 3 lives
remaining. You now, in effect, have unlimited lives.
The easiest cheats (values) to find are lives or other numbers that you
can see on the screen. You can also search for values that determine
how you have a certain ability, and lengthen (or shorten!) the time you
have the ability.
In 1942, when you perform a loop, you are invincible during the time you
are in the loop. So you can search to have that invincibility during the
entire game.
In Pacman, you can search for a code that keeps the ghosts blue during
the entire game.
Here is how you start searching for cheat codes. (More later on what to
do with them.)
There are 5 methods available to search for cheat codes. Each of them
has specific advantages, and with practice you will learn which one to
use depending on what it is you are searching for.
Also, from the "Start A New Cheat Search" menu, you can bring up help to
detail the search methods available.
Here is a description of the methods and an example of how to use them.
- Method #1 is used to search for a known number and follow its value.
It is good for lives or other numbers. Here are the steps to find the
lives value in (Namco) Dig Dug.
- Start MAME.
- Start a game.
- Go to the cheat menu, and select "Start A New Cheat Search".
- Select "Lives or other number".
- With the arrow keys, enter the number of lives you had at the bottom
of the screen while in the game. (Normally 2, but that depends on
the DIP Switch settings.) Then press <ENTER>.
- Return to the game.
- Die.
- Go to the cheat menu, and select "Continue Search".
- Enter the number of lives you now have left. (Normally 1.)
- The program will display all the locations that match your search
criteria. If you have performed the search properly,and starting
with 2 lives, you should see 2 entrys:
840A = 02
840C = 02
It means that the locations $840A and $840C had the value of 2 in
them when you started the search, and have the value of 1 in them
now. (We will try to narrow the list down to 1 entry.)
- Return to the game
- Die again.
- Go to the cheat menu, and select "Continue Search" again.
- Enter the number of lives you have left. (Normally 0.)
- The list is the same, so now we will try to find which is the good
one.
- Press <F2> to copy all entries into the "Loaded Cheat" list, Or press
<ENTER> on each of them to add them one by one.
- Press <ESC> or <TAB>.
- Select "Load And/Or Enable A Cheat".
- You should see your 2 entries in the upper list.
- Select the first entry (840A) press <ENTER> to copy it to the "Active
Cheat list".
- Return to the game.
- Die. Since it was your last life your game should end, but it does
not end: it is a good code. (What was the other code for? Let's
try it and see.)
- Go to the cheat menu, and select "Load And/Or Enable A Cheat".
- Press <ENTER> on the 840A entry to remove it from the "Active
Cheat List".
- Press <ENTER> on the 840C entry to copy it into the "Active Cheat
List".
- Return to the game.
- Die. It does the same thing of the other cheat code. It just so
happens that in this game, there are 2 locations in memory that
contain the lives remaining. So either one should good.
- Return to the "Load And/Or Enable A Cheat" menu
- Select the 840A or 840C entry, and press <F1> to save it in the
CHEAT.DAT file. It will be saved with a cheat name of "840A = 02"
(or "840C = 02).
- Although the cheat system can edit cheat information, I will ask you
to edit the CHEAT.DAT file and give the cheat a more meaningful
description. (See below "How To Use The Cheat Editor")
The last line of the file should be:
digdugnm:0:840A:2:0:840A = 02
(While you are there, you can change the 2, in the fourth
field, to a "6" so you will see 5 or 6 lives at the bottom of
the screen when you will activate this cheat.) Give the cheat
a more meaningful description (30 characters max). When you
are finished, the line should look something like:
digdugnm:0:840A:6:0:Infinite Lives
- From now on when you will start (Namco) Dig Dug you will have
"Infinite Lives" in the list of cheats available for that game.
Note: With lives remaining, you can have 3 values: the number of
lives displayed or the number displayed + 1 which is the real
number of lives you have, or possibly the number of lives
displayed - 1! Because of that, the method #1 will
search for the number you enter and the number - 1.
- Method #2 looks for locations that have changed by a specific value
since the last time you checked.
This method is good for timers, lives, energy, money, and level
searches. Note that this search is not performed in reference to a
start value like the other methods.
I did it this way because I think it is easier to tell the cheat system
that you lose a life, and another one, or that a value has incremented
by 1 or 2 since the last time instead of telling it in reference to a
start value that you lost 1 life, then 2, then 3. Here is an example:
- Start a game with 3 lives.
- Go to the cheat menu, and initialize the search. This will save a
copy of the game's memory.
- Go back to the game, and lose a life.
- Go to the cheat menu, and search for a value that has changed by -1
since the search was initialized.
- Go back to the game, and lose another life.
- Go to the cheat menu, and search for a value that has changed again
by -1 since the last search. Each time you do this, the
cheat system will save the game's memory, and display the memory
locations that match your search criteria.
- Method #3 is used to search for an "energy bar" or any other value
that you can tell has changed, or has not changed. Therefore, you
search for values that are greater than, less than, or equal to the
last value. Note that this search is not performed relative to a
starting value, but relative to the last time you continued the
search. (The first time uses the starting value, of course.)
For example, we will try to find the "energy bar" in the game "Kung
Fu Master":
- Start a game in Kung Fu Master. (Wait a little bit for the game
to actually start. When you can start to move, your "Energy Bar"
will be full.)
- Go to the cheat menu, and select "Start A New Cheat Search".
- Select "Energy (Greater Or Less)". (This will initialize the search.)
- Return to the game, and wait for an enemy to "grab" you. This will
cause your "energy bar" to decrease.
- Go the the cheat menu, and select "Continue Search".
- Select "New value is smaller". (Because your "energy bar" as
decreased in value.)
- Return to the game for just a little bit so that your "energy bar"
decreases a little more.
- Go the the cheat menu, and select "Continue Search".
- Select "New value is smaller". (Because your "energy bar" as
decreased in value again.)
- Return to the game for just a little bit so that your "energy bar"
decreases a little more.
- Go the the cheat menu, and select "Continue Search".
- Select "New value is smaller". (Because your "energy bar" as
decreased in value yet again.)
- At this point, you should have less than 10 entries. But we are
are going to try to narrow it down even more.
- Return to the game, and let your player die (or get killed). When
you player restarts, you will now have a full "energy bar".
- Go the the cheat menu, and select "Continue Search".
- Select "New value is greater". (Because your "energy bar" is
now full.)
- Return to the game, briefly. Do not let your player lose any energy!
- Go the the cheat menu, and select "Continue Search".
- Select "New value is equal". (Because your "energy bar" is the
same as before.)
- Aha! At this point, you should have 2 entries left. Press <F2> to
register them in the list.
- After a little more experimentation, you will see that the first
address (E709) is the good one (where your energy is stored), while
the second address (E81A) is used for displaying the "energy bar".
Try it! If you set the wrong address, your "energy bar" will show
full, but you will still die!
- Method #4 is used to search for a status bit (or flag). This method
is good to search for temporary invincibility and weapon status.
In 1942 you are invincible when you perform a looping, we will try to
search for that state. Here is an example (using 1942):
- Start a game.
- Perform a loop.
- While looping, go to the cheat menu, and select "START NEW SEARCH".
- Return to the game.
- When the loop is finished, wait a little while...
- Go to the cheat menu, and select "CONTINUE SEARCH".
- Select "Opposite from start".
- Return to the game.
- Perform a loop.
- While in the loop, go to the cheat menu, and select "CONTINUE
SEARCH".
- Select "Same as start".
- Repeat as many times as required to narrow the list down. (After
about 10 times I had 6 entries.)
Follow the procedure above and you should find that E0A5 = 02 (memory
location E0A5, set to a value of 2) is the cheat for invincibility.
- Method #5 is used as last resort. The cheat system will search for a
byte that is the same or different from when you first started
(initialized the search). It is very much like method #4 but since it
will search for a whole byte, you will get different results with this
method.
How To Use The Memory Watch
===========================
The memory watch allows you to "keep an eye on" specific memory
locations. The memory watch will display (at the top of the game
screen) the contents of up to 10 memory locations that you specify.
After selecting the cheat menu, and selecting "Memory Watch", you can
select up to ten addresses to watch. If the address reads "FFFF", it
is disabled, and no value will be shown for that address.
Using the up and down Arrow keys, select which watch you want to
activate.
Using the right and left arrow keys, and <+> and <-> on the keypad,
select the address that you wish to watch. You can use the <1>, <2>,
<3> and <4> keys to increment the value in the first, second, third,
and fourth columns.
Hitting <ENTER> will copy the value from the previous entry. Hitting
<DELETE> will disable the value (set it to FFFF).
The <I>, <J>, <K> and <L> keys are used to change the location of where
the watches are shown. You must have at least one watch enabled in
order to see this effect.
The watches take effect as soon as you enable them.
You can also enable a watch from the "Load And/Or Enable A Cheat" Cheat
List.
Watches do NOT modify any memory. They only show it to you. Therefore,
you can have watches enabled while a game is running it's self-test
without affecting the self-test.
(Watches can also be enabled from the "Load And/Or Enable A Cheat" screen.
This way, you can observe what value that a potential cheat will modify,
to see if it is the one that you are looking for.)
As as example, suppose that you have found 6 locations that could
contain "lives remaining". Rather than patching each location one at a
time, you could just put a watches on the 6 locations, and see which one
changes.
How To Use The Cheat Editor
===========================
The Cheat editor allows you to modify the properties of any cheat that is
loaded into the Cheat List. Once in the editor, you can change the
Name, CPU, Address, Value and Type of the cheat. This prevents you from
having to go into the CHEAT.DAT file to change any settings.
The Cheat Editor, coupled with the ability to insert a new cheat into the
Cheat List, and the Memory Watcher, greatly simplifies searching for and
creating new cheats.
The Cheat Editor uses right and left arrow keys, and <+> and <-> on the
keypad to change the values of the cheat. You can also use the <1>, <2>,
<3> and <4> keys to increment the value in the first, second, third,
and fourth columns, if available.
Help is available for the Cheat Editor, and can be brought up by hitting
<F10>. The help system will explain all of the features.
Tips
====
When searching for lives, after telling the cheat system the number of
lives you have remaining a few times, progressing the search, you will
probably have a list of 1 or 2 entries. But when searching for a
Status bit, you will probably be stuck with a list of more than 10 or
20 entries. When you see that you cannot narrow down the list any more,
try the following:
- When you have the list on the screen, press <F2> to copy them all to
the "Loaded List". (The limit of the "Loaded List" is 100 entries.)
- Back up, and select "Load And/Or Enable A Cheat".
- You see your list there. Enable some of them (5 to 10). (You
cannot have more than 10 cheats enabled at the same time.)
- Go back to the game to see what effect this has.
- If there is no noticeable effect, or if the effect is not what you
where searching for:
- Return to the "Load And/Or Enable A Cheat" screen.
- Delete the entries that you previously enabled using <DELETE>.
(Deleting a code from the upper list also deletes it from the
"Active List". Remember, deleting a cheat from the upper list
does not affect the CHEAT.DAT file, so you may delete existing
cheat codes to have more space.)
- Enable some other codes, and return to the game to see what
happens.
- When you have the effect you want in the game, you can be sure that
the cheat code is one of the ones that you enabled, so enable them
one at the time to find the correct code.
- When you have found a code that you want to keep, select it in the
"Loaded List", and press <F1> to save it in the CHEAT.DAT file.
When looking for cheats, be aware that a game may keep the same value in
two locations. The Kung Fu Master example above shows this. It is
possible for a game to keep the number if lives remaining in one
location in its RAM, but use the same value on screen someplace.
For example, if you are working with a game that shows a "3" on the
screen when you have 3 lives remaining, you might find two different
memory locations that both change (and are the same value) whenever you
gain and lose a life.
If you are using a type of "infinite <something" cheat, be aware that
some games, like Kung Fu Master, and Yie-ar Kung Fu use your remaining
energy, at the end of a level, as a bonus. If you do not disable the
cheat at this time, your bonus will go on forever! You can use <F7> to
disable cheats at this time, and then reenable them after the next level
begins.
If you have any special knowledge about a game, like its Memory Map,
you can automatically throw out any locations that you know are not in
the games RAM area(s). Examining the source code to the MAME drivers
can help get you this information.
Notes
=====
While in the game, press <~> (might be the <`> key) to go directly to
the "Continue Cheat" page. (See the MAME docs, as this key might have
been changed.)
To find a certain cheat, you may want to reset the emulation with <F3>.
This will not affect the state of the current search and may be useful
if you want to start a new game and retry the same actions with a few
slight changes. (Note that a game might fail it's self test if the
self test is performed while a cheat is active.)
Normally, for cheats like Infinite Lives, Put a larger-than-usual
number so that the player will see an abnormal number of lives. This
will remind him/her that he/she has a cheat enabled.
CHEAT.DAT file description
==========================
Lines that start with a semicolon (;) are comments.
A cheat code consists of a line of 5 fields separated by a colon (:),
in this format:
digdugnm:0:840A:6:0:Infinite Lives
<Name>:<CPU>:<Addr>:<Data>:<Type>:<Desc>
<Name>: The (short) name of the game. This is the same as the name of
the game that you use on the MAME command line.
<CPU>: Which CPU (for games with multiple CPUs). Always "0" in this
version of the cheat system.
<Addr>: The memory location to apply the value at, in Hexadecimal.
<Data>: The data to put at the memory location, in Hexadecimal.
<Type>: Type Of Cheat. Usually "0". Here is a list of the types:
0: Write cheat data into RAM each video frames.
1: Write cheat data into RAM once, and then delete cheat
from the "Active List".
2: Wait one second between writes of cheat data to RAM.
3: Wait two seconds between writes of cheat data to RAM.
4: Wait five seconds between writes of cheat data to RAM.
5: When the original value in RAM is not like the cheat
data, wait one second then write cheat data to RAM.
(Used by Tempest for the Super Zapper cheat.)
6: When the original value in RAM is not like the cheat
data, wait two seconds then write cheat data to RAM.
7: When the original value in RAM is not like the cheat
data, wait five seconds then write cheat data to RAM.
8: If the original value in RAM is being decremented by
1 each frame, do not write the cheat data to RAM.
Otherwise, write the cheat data to RAM.
(This cheat type, and the next 3 that follow, are used
to prevent games, that countdown values at a certain
point, from counting down forever. Kung Fu Master is
one example. Note what happens at the end of a level.)
9: If the original value in RAM is being decremented by
2 each frame, do not write the cheat data to RAM.
Otherwise, write the cheat data to RAM.
10:If the original value in RAM is being decremented by
3 each frame, do not write the cheat data to RAM.
Otherwise, write the cheat data to RAM.
11:If the original value in RAM is being decremented by
4 each frame, do not write the cheat data to RAM.
Otherwise, write the cheat data to RAM.
(I do not know if types 8 - 11 will be useful. I hope so. It
works for some games, like Kung Fu Master, but not for
others, like Rally X. More research is being done to fix this
problem.)
<Desc>: The description (30 characters max).
Have fun!
Marc Lafontaine
marclaf@sympatico.ca
http://www3.sympatico.ca/marclaf
(Edited by James R. Twine, jtwine@bettynet.com)